home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / text / faqs / prolog.resource-guide.part1 < prev    next >
Encoding:
Internet Message Format  |  1994-05-15  |  58.3 KB

  1. Subject: FAQ: Prolog Resource Guide 1/2 [Monthly posting]
  2. Newsgroups: comp.lang.prolog,comp.object.logic,news.answers,comp.answers
  3. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  4. Date: Fri, 13 May 1994 14:53:20 GMT
  5.  
  6. Archive-name: prolog/resource-guide/part1
  7. Last-Modified: Wed Apr 20 01:23:33 1994 by Mark Kantrowitz
  8. Version: 1.18
  9.  
  10. ;;; ****************************************************************
  11. ;;; Prolog Resource Guide ******************************************
  12. ;;; ****************************************************************
  13. ;;; prg_1.faq -- 57569 bytes
  14.  
  15. Contributions, corrections, suggestions, and comments should be sent
  16. to Mark Kantrowitz at mkant+prg@cs.cmu.edu. 
  17.  
  18. This guide lists a variety of resources for the Prolog community,
  19. including books, magazines, ftp archives, and products. It is posted
  20. once a month to the newsgroups comp.lang.prolog and comp.object.logic.
  21.  
  22. *** Copyright:
  23.  
  24. Copyright (c) 1992-94 by Mark Kantrowitz. All rights reserved.
  25.  
  26. This FAQ may be freely redistributed in its entirety without
  27. modification provided that this copyright notice is not removed.  It
  28. may not be sold for profit or incorporated in commercial documents
  29. (e.g., published for sale on CD-ROM, floppy disks, books, magazines,
  30. or other print form) without the prior written permission of the
  31. copyright holder.  Permission is expressly granted for this document
  32. to be made available for file transfer from installations offering
  33. unrestricted anonymous file transfer on the Internet.
  34.  
  35. This article is provided AS IS without any express or implied warranty.
  36.  
  37. *** Acknowledgments:
  38.  
  39. The original version of this guide (Version 0.6, Dec 11, 1991) was
  40. compiled by Dag Wahlberg, Uppsala University, Sweden <dagwag@csd.uu.se>.
  41. Other people who helped with the compilation include Chris Moss
  42. <cdsm@doc.ic.ac.uk>, Mats Carlsson, SICS <matsc@sics.se>,
  43. Michael A. Covington <mcovingt@ai.uga.edu>, Jocelyn Paine
  44. <popx@vax.ox.ac.uk>, Per G. Bilse, PDC <pdev@pdc.dk>, David Cohen, BIM
  45. Systems Inc <dc@bim.com>, Mark Korsloot <mark@logic.et.tudelft.nl>, and
  46. David W. Talmage <talmage@luvthang.aquin.ori-cal.com>. 
  47.  
  48. Thanks also to Jamie Andrews <jamie@cs.sfu.ca>.
  49.  
  50. ----------------------------------------------------------------
  51. Table of Contents (Part 1):
  52.   [1-0]  Introduction
  53.   [1-1]  Sources of information about Prolog
  54.   [1-2]  FTP Archives and Other Resources
  55.   [1-3]  Free Object-Oriented Systems for Prolog
  56.   [1-4]  Commercial Object-Oriented Systems for Prolog
  57.   [1-5]  The Prolog 1000 Database
  58.   [1-6]  X-Windows Interfaces
  59.   [1-7]  Prolog-related Mailing Lists
  60.   [1-8]  Books and Magazine Articles
  61.   [1-9]  Is there a straight-forward way of compiling Prolog to C?
  62.   [1-10] WAM emulators and tracers
  63.   [1-11] What is the Basic Andorra Model and AKL?
  64.   [1-12] What is Constraint Logic Programming?
  65.   [1-13] How do you write portable programs in Prolog?
  66.  
  67. Prolog Implementations (Part 2):
  68.   [2-0]  General information about Prolog Implementations
  69.   [2-1]  Free Prolog Implementations
  70.   [2-2]  Commercial Prolog Implementations
  71.   [2-3]  Free Parallel Prolog Implementations
  72.   [2-4]  Commercial Parallel Prolog Implementations
  73.   [2-5]  Free Constraint Systems
  74.   [2-6]  Commercial Constraint Systems
  75.   [2-7]  Free Logic Programming Systems
  76.   [2-8]  Commercial Logic Programming Systems
  77.  
  78. Search for [#] to get to topic number # quickly. In newsreaders which
  79. support digests (such as rn), [CTRL]-G will page through the answers.
  80.  
  81.  
  82. Recent Changes:
  83. ;;; 1.18:
  84. ;;; 20-APR-94 mk    Added IBM SAA AD/Cycle Prolog to [2-2] and ICE (Integrated
  85. ;;;                 Constraint Engine) to [2-6].
  86. ;;; 22-APR-94 mk    Updated ftp information for ftp.gmd.de.
  87. ;;; 22-APR-94 mk    New edition of Sterling's book.
  88. ;;;  9-MAY-94 mk    Updated Arity email addresses.
  89. ;;; 12-MAY-94 mk    Added citation for the Goedel book to the Goedel entry.
  90. ;;; 12-MAY-94 mk    Added Koen De Bosschere's prolog parser (C) to [1-2].
  91. ;;; 12-MAY-94 mk    Added entry on Flach's Prolog book.
  92. ;;; 12-MAY-94 mk    Added entry on Karlsson's collection of Queens and Knights
  93. ;;;                 implementations.
  94.  
  95. ----------------------------------------------------------------
  96. Subject: [1-0] Introduction
  97.  
  98. This guide lists Prolog resources: archives, newsgroups, books,
  99. magazines, compilers, interpreters and anything else you can think of
  100. which has to do with the proliferation of Prolog. Also included is a
  101. list of suppliers of products and a list of publishers. As Prolog has
  102. a strong historical tradition in Europe, we've tried to ensure that
  103. the information is relevant to all readers, including European and
  104. North American. 
  105.  
  106. This guide is posted regularly to comp.lang.prolog and comp.object.logic. 
  107. It may also be obtained by anonymous ftp from 
  108.    ftp.cs.cmu.edu:/user/ai/pubs/faqs/prolog/  [128.2.206.173]
  109. using username "anonymous" and password "name@host" (substitute your
  110. email address) or via AFS in the Andrew File System directory
  111.    /afs/cs.cmu.edu/project/ai-repository/ai/pubs/faqs/prolog/
  112. as the files prg_1.faq and prg_2.faq.
  113.  
  114. You can also obtain a copy of the FAQ by sending a message to
  115. ai+query@cs.cmu.edu with 
  116.    Send PRG
  117. in the message body.
  118.  
  119. The FAQ postings are also archived in the periodic posting archive on
  120.    rtfm.mit.edu:/pub/usenet/news.answers/prolog/ [18.70.0.209]
  121. If you do not have anonymous ftp access, you can access the archive by
  122. mail server as well.  Send an E-mail message to
  123. mail-server@rtfm.mit.edu with "help" and "index" in the body on
  124. separate lines for more information.
  125.  
  126. An automatically generated HTML version of the PRG is accessible by
  127. WWW as part of the AI-related FAQs Mosaic page. The URL for this
  128. resource is
  129.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/top.html
  130. The direct URL for the PRG is
  131.    http://www.cs.cmu.edu:8001/Web/Groups/AI/html/faqs/lang/prolog/prg/top.html
  132.  
  133. If you need to cite the FAQ for some reason, use the following format:
  134.    Mark Kantrowitz, "Prolog Resource Guide", comp.lang.prolog, <month>, <year>,
  135.    ftp.cs.cmu.edu:/user/ai/pubs/faqs/prolog/prg_?.faq, mkant+prg@cs.cmu.edu.
  136.  
  137. Disclaimer:
  138.  
  139.    We have taken great care in making the information in this document as
  140.    accurate as possible. However we are not responsible for any problems
  141.    which might occur from using information supplied in this guide.
  142.  
  143. ----------------------------------------------------------------
  144. Subject:  [1-1]  Sources of Information about Prolog
  145.  
  146. The newsgroups comp.lang.prolog, comp.object.logic, and (to a lesser
  147. extent) comp.ai are a source of information and discussion about Prolog. 
  148. See also sci.logic. The newsgroup comp.constraints is for information
  149. about constraint processing languages and related topics. 
  150.  
  151. A "Frequently Asked Questions" posting is posted to comp.lang.prolog
  152. twice a month by Jamie Andrews <jamie@cs.sfu.ca>. The Prolog FAQ and this
  153. Prolog Resource Guide are intended to complement one another.
  154.  
  155. The draft ISO standard for Prolog is available by anonymous ftp from
  156. ai.uga.edu:/pub/prolog.standard/ [128.192.12.9]. An unofficial summary
  157. of the draft ISO Prolog standard is available from the same location
  158. as isoprolog.tex or isoprolog.ps.Z.  Send mail to Michael Covington
  159. <mcovingt@ai.uga.edu> for more information.
  160.  
  161. ----------------------------------------------------------------
  162. Subject: [1-2] FTP Archives and Other Resources
  163.  
  164. The following are achives that contain Prolog-related material, such as
  165. code, interpreters, articles, etc. Most of the archives are ftp sites.
  166. They are listed by domain.name and [IP Address]. To access them and
  167. download programs type at the prompt: 
  168.  
  169.         ftp <site name> (or IP address)
  170.         login: "anonymous",
  171.         password: your own return email address,
  172.         cd <directory>, ls to see files, 
  173.         set binary, 
  174.         get <filename> to transfer file to your system
  175.         stop with quit or exit
  176.  
  177. Deviations from this general scheme may occur but the above should
  178. work in most cases.
  179.  
  180.  
  181. Artificial Intelligence Programs:
  182.    ai.uga.edu:/pub/ [128.192.12.9]
  183.  
  184.    The University of Georgia AI FTP Library contains public domain
  185.    Prologs, such as Open Prolog and ESL PD Prolog, PrEd (a small text
  186.    editor for Prolog), and some miscellaneous prolog programs in
  187.       ai.uga.edu:/pub/prolog/
  188.    A copy of the programs from the book by Covington, Nute, and Vellino, (see
  189.    the section on Books below), is in
  190.       ai.uga.edu:/pub/prolog.book/
  191.    and the draft ISO standard for prolog is in
  192.       ai.uga.edu:/pub/prolog.standard/
  193.    Some technical reports with accompanying code are in
  194.       ai.uga.edu:/pub/ai.reports/
  195.    Other materials of interest are in
  196.       ai.uga.edu:/pub/natural.language/
  197.       ai.uga.edu:/pub/natural.language.book/
  198.    Maintained by Michael Covington <mcovingt@ai.uga.edu>.
  199.  
  200. ALE:     
  201.    ALE (Attribute Logic Engine), a public domain system written in
  202.    Prolog, integrates phrase structure parsing and constraint logic
  203.    programming with typed feature structures as terms.  Types are
  204.    arranged in an inheritance hierarchy and specified for the features
  205.    and value types for which they are appropriate.  Grammars may also
  206.    interleave unification steps with logic program goal calls (as can be
  207.    done in DCGs), thus allowing parsing to be interleaved with other
  208.    system components.  While ALE was developed to handle HPSG grammars,
  209.    it can also execute PATR-II grammars, DCG grammars, Prolog, Prolog-II,
  210.    and LOGIN programs, etc. Grammars and programs are specified with a
  211.    version of Rounds-Kasper Attribute Value Logic with macros and
  212.    variables.  ALE supports lexical rules and empty categories for
  213.    grammars, using a bottom-up, breadth-first dynamic chart parser. ALE
  214.    supports last call optimization, negation by failure and cuts in
  215.    definite clauses, which may be used independently or integrated into
  216.    grammars. The system is available free for research purposes, from
  217.    Bob Carpenter <carp@lcl.cmu.edu>.
  218.  
  219. ALP-UK Library:
  220.    The best Prolog library currently is the one collected by the ALP-UK
  221.    group. It is available to members at 30 pounds sterling for a Sun
  222.    cartridge or 2 pounds/IBM DOS disk. (non-members maybe, how much?) It
  223.    contains MBs of Prolog systems (including SB Prolog), libraries
  224.    (including the Edinburgh library), benchmarks, grammars, theorem provers,
  225.    object and graphics systems etc. For more information, write to ALP-UK
  226.    Library, Sanjay Raina, Librarian, Dept. of Computer Science, University
  227.    of Bristol, University Walk, Bristol BS8 1TR, UK, call +44 0272 303030
  228.    x3304, or send email to raina@compsci.bristol.ac.uk.
  229.  
  230. CASLOG
  231.    CASLOG (Complexity Analysis System for LOGic) is an experimental
  232.    semi-automatic complexity analysis system for logic programs. It can
  233.    perform the worst-case analysis for complexity measures: argument size
  234.    complexity, number of solutions complexity, and time complexity.
  235.  
  236.    CASLOG extends the techniques developed for analyzing imperative and
  237.    functional languages to deal with nondeterminism and generation of
  238.    multiple solutions via backtracking in logic languages. The analyses
  239.    for different complexity measures are implemented in a unified
  240.    framework and share several common features. First, the predicates in
  241.    a program are processed in an order generated by a bottom-up
  242.    topological sorting over the call graph of the program. Second, the
  243.    complexity function for a predicate is derived from the complexity
  244.    function of its clauses by using the information about the mutual
  245.    exclusion relationships between its clauses. Third, the complexity
  246.    function for a clause is inferred based on the data dependency
  247.    relationships between its literals. Fourth, the complexity functions
  248.    for recursive clauses are in the form of difference equations and are
  249.    transformed into closed form functions using difference equation
  250.    solving techniques. This unified framework can simplify proofs of
  251.    correctness and the implementation of the algorithms.
  252.  
  253.    CASLOG is available by anonymous ftp from cs.arizona.edu:/caslog/. This
  254.    is an alpha distribution, and includes CASLOG version 1.0, a
  255.    preliminary user manual, a paper on CASLOG, and a set of examples.
  256.    For more information, contact Nai-Wei Lin <naiwei@cs.arizona.edu>.
  257.  
  258. Constraint Programming Paper Archive:
  259.    Aarhus University, Denmark, has established an anonymous ftp archive
  260.    for papers on "Constraint Programming" at ftp.daimi.aau.dk:/pub/CLP/.
  261.    For further information, contact Brian H. Mayoh <brian@daimi.aau.dk>.
  262.  
  263. CSP:
  264.  
  265.    Some constraint-related papers by a research group at the
  266.    University of Washington are available by anonymous ftp from 
  267.       june.cs.washington.edu:/pub/constraints/papers/
  268.    The papers from the 1994 Principles and Practice of Constraint
  269.    Programming Workshop are available in
  270.       june.cs.washington.edu:/pub/constraints/papers/ppcp94/
  271.    There are also implementations of several constraint satisfaction
  272.    algorithms and constraint-based systems, including the DeltaBlue and
  273.    SkyBlue algorithms, the Multi-Garnet user interface toolkit, ThingLab
  274.    II, and CoolDraw (a constraint-based drawing system), in
  275.    subdirectories of 
  276.       june.cs.washington.edu:/pub/constraints/code/
  277.    The ftp archive is also accessible via WWW:
  278.       http://web.cs.city.ac.uk/archive/constraints/constraints.html
  279.    All the source code is in the public domain. For more information,
  280.    write to Alan Borning <borning@geoduck.cs.washington.edu>.
  281.  
  282.    C implementations of a number of constraint satisfaction algorithms
  283.    are available by anonymous ftp from
  284.       ftp.cs.ualberta.ca:/pub/ai/csp/
  285.    Get the files README and csplib.tar.Z.  The algorithms include
  286.    variations on backtracking (backjumping, backmarking, chronological
  287.    backtracking, etc.), local consistency preprocessing algorithms (e.g.,
  288.    arc consistency), and random problem generators. For more information,
  289.    write to Peter van Beek <vanbeek@cs.ualberta.ca>.
  290.  
  291. Eden:
  292.    Eden is a Poplog-based AI microworld developed by Simon Perkins,
  293.    Jocelyn Paine and Edmund Chattoe of the Oxford University Artificial
  294.    Intelligence Society. It is intended to serve as a testbed for
  295.    learning and planning programs. Programs written in Pop-11, Prolog,
  296.    Lisp, and ML control a "bug" that lives in a 2-dimensional world. Any
  297.    kind of algorithm may be used to control the bug, including genetic
  298.    algorithms, neural nets, and rule-based systems. Eden consists of a
  299.    grid of cells, each of which can contain objects such as keys, doors,
  300.    boulders and quicksand. Bug's objective is to find and eat a piece of
  301.    food which the simulator has placed somewhere within this grid. To do
  302.    this, Bug must negotiate its way towards the food while dealing
  303.    intelligently with obstacles. Eden's laws of physics allow Bug to take
  304.    one of several different actions when it encounters an object. The
  305.    simulator then works out the consequences of the chosen action on Bug
  306.    and on Eden, and displays these graphically in a Ved window. Bug's
  307.    perceptions are updated to reflect the new state of the world, and the
  308.    cycle repeats. Eden is available by anonymous ftp from the Imperial
  309.    College archive in
  310.       src.doc.ic.ac.uk:/packages/prolog-pd-software/ [146.169.2.10] 
  311.    as the file eden.tar.Z. (Note: This is really a link to the
  312.    directory computing/programming/languages/prolog/pd-software/.)
  313.    Eden includes PopBeast, a simple Prolog bug which can read and
  314.    parse simple commands, extract their meaning, plan how to satisfy
  315.    these commands, and then carry out the plans.
  316.  
  317.    Parts of the current Eden are coded in Pop-11, so porting it to
  318.    Prologs other than Poplog will require some effort. Most of the
  319.    recoding needed is in the grid-world simulator and the definition of
  320.    objects. Send mail to Jocelyn Paine <popx@vax.oxford.ac.uk> if
  321.    you're willing to try this. 
  322.  
  323. Logic Programming Bibliographies:
  324.    duck.dfki.uni-sb.de:/pub/lp-proceedings/ [134.96.188.92]
  325.  
  326.    The ftp server supports tar'ing on the fly, so if you type "get
  327.    bibtex.tar" you will get a tar'ed version of the "bibtex" directory.
  328.  
  329.    BibTeX entries for the proceedings of the following conferences
  330.    are included: SLP84-87,91, NACLP89-90, ILPS91, ICLP82,84,86-91,93,
  331.       JICLP92, LP88, RTA89,93, PLILP90-92, ALPUK91, ICOT92, ALP90,92,
  332.       CADE90,92, CTRS90,92, LICS86-91, UNIF89, EPIA89,91,93, TACS91,
  333.       TAPSOFT93, EAIA90, FGCS92, FAC, ILPS93
  334.    and the following journals: JLP85-93, JAR91,92, JSC91,92, IANDC82-92.
  335.  
  336.    The bibliography is mirrored by the Universidade Nova de Lisboa.
  337.    In addition, the bibliography can be searched using either WAIS or
  338.    GOPHER. To search the lp-proceedings using WAIS, use the
  339.       lp-proceedings.src 
  340.    wais source, available from the directory of servers. To search the
  341.    lp-proceedings using GOPHER, point the client to gopher.fct.unl.pt,
  342.    and follow the directories 
  343.       "Research/Bibliography/Logic Programming Proceedings".
  344.    Searching should be easier than retrieving the entire package every
  345.    time you want to locate a particular article.
  346.  
  347.    Send comments and bug reports to rscheidhauer@dfki.uni-sb.de.
  348.  
  349. Machine Learning Algorithms Implemented in Prolog:
  350.  
  351.    In 1988 the Special Interest Group on Machine Learning of the German
  352.    Society for Computer Science (GI e.V.) decided to establish a library
  353.    of PROLOG implementations of Machine Learning algorithms. The library
  354.    includes - amongst others - PROLOG implementations of Winston's arch, 
  355.    Becker's AQ-PROLOG, Fisher's COBWEB, Brazdil's generation of 
  356.    discriminations from derivation trees, Quinlan's ID3, inverse 
  357.    resolution, and Mitchell's version spaces algorithm. The programs are 
  358.    currently available via anonymous ftp-server from the GMD:
  359.  
  360.         ftp.gmd.de:/gmd/mlt/ML-Program-Library [129.26.8.84]
  361.  
  362.    Send additional PROLOG implementations of Machine Learning
  363.    Algorithms, complaints about them and detected bugs or problems
  364.    to Thomas Hoppe, <hoppet@cs.tu-berlin.de>. Send suggestions and
  365.    complaints about the ftp library to Werner Emde, Gesellschaft
  366.    fuer Mathematik und Datenverarbeitung, Bonn, <emde@gmd.de>. 
  367.  
  368.  
  369. Natural Language Processing in Prolog:
  370.  
  371.    The Prolog and DCG programs from Pereira and Shieber's book, "Prolog
  372.    and Natural Language Analysis", are available by anonymous ftp from
  373.    das.harvard.edu:/pub/shieber/pnla/. See the file README for the
  374.    conditions under which the material is distributed. If you retrieve
  375.    the files, please send an email message to the authors letting them
  376.    know how you plan to use them. For further information, write to
  377.    Fernando Pereira <pereira@research.att.com> or Stuart Shieber
  378.    <shieber@das.harvard.edu>.
  379.  
  380. Parser:
  381.    A parser for standard Prolog text written in C is available by
  382.    anonymous ftp from
  383.       trappist.elis.rug.ac.be:/pub/prolog/
  384.    It consists of only three modules (tokenizer, parser, and display
  385.    routine) and an interface module to integrate it with an existing
  386.    Prolog system. It is completely deterministic and about 10 times
  387.    faster than O'Keefe's public domain parser written in Prolog.
  388.    For more information, write to Koen De Bosschere <kdb@elis.rug.ac.be>.
  389.  
  390. Pleuk Grammar Development System:
  391.  
  392.    Pleuk is intended to be a shell for grammar development, in that many
  393.    different grammatical formalisms can be embedded within it.
  394.    Grammatical formalisms that currently work with Pleuk include CFG (a
  395.    simple context-free grammar system), HPSG-PL (a system for developing
  396.    HPSG-style grammars, produced at Simon Fraser University, Canada, by
  397.    Fred Popowich, Sandi Kodric and Carl Vogel), Mike (a simple
  398.    graph-based unification system, enhanced with additional operations
  399.    for the treatment of free word order proposed by Mike Reape in various
  400.    publications), SLE (a graph-based formalism enhanced with arbitrary
  401.    relations in the manner of Johnson & Rosner and Doerre & Eisele.
  402.    Delayed evaluation is used to compute infinite relations.  This system
  403.    has been used for the development of several HPSG-style grammars) and
  404.    Term (a term-based unification grammar system, originally developed
  405.    for the support of Unification Categorial Grammar of Zeevat, Klein and
  406.    Calder). Sample grammars are provided for all of these formalisms.
  407.    Work continues apace on other formalisms, including Bob Carpenter's
  408.    Ale system for typed feature structures, and Veronica Dahl's Static
  409.    Discontinuity Grammars.
  410.  
  411.    Pleuk requires SICStus prolog version 2.1#6 or later, plus a variety
  412.    of ancillary programs available free of charge from many FTP servers.
  413.    Pleuk is available via anonymous FTP from the University of Georgia
  414.    Artificial Intelligence FTP library
  415.       ai.uga.edu:/pub/natural.language/
  416.    as the files pleuk.1.0.tar.Z, pleuk.PSmanuals.tar.Z, and pleuk.README.  
  417.    Pleuk will also be available shortly from the Natural Language
  418.    Software Registry, German Research Institute for Artificial
  419.    Intelligence (DKFI), Saarbruecken.  For more information, send email
  420.    to pleuk@cogsci.ed.ac.uk.
  421.  
  422. Prolog Repository:
  423.    Established by Jocelyn Paine of Experimental Psychology, Oxford
  424.    University in 1987. The current catalogue (January 1991) contains
  425.    30 entries. For catalogue, queries and contributions contact POPX at: 
  426.       popx%vax.ox.ac.uk@oxmail.ox.ac.uk (internet) or 
  427.       popx@uk.ac.ox.vax (janet) 
  428.  
  429.    FTP access is available through the Imperial College archive at
  430.       src.doc.ic.ac.uk:/packages/prolog-pd-software/  [146.169.2.10]
  431.    This is actually a link to the directory
  432.       /computing/programming/languages/prolog/pd-software/
  433.       
  434.    To access it, cd to either of the above directories via
  435.    anonymous ftp. The file README gives a brief summary of the
  436.    contents of the directory and CATALOGUE gives a (long!)
  437.    description of each entry. Entries include the Logic Programming
  438.    Tutor from Paine's book, the DEC-10 public-domain library, the
  439.    Linger natural-language corrector, a simple object-oriented
  440.    add-on for Prolog, graph utilities, among other things.
  441.  
  442.    Files in the archive are also available on MS-DOS floppies for a
  443.    nominal fee to cover the cost of floppies, postage, and packing. 
  444.  
  445. Prolog to SQL Compiler:
  446.    The Prolog to SQL Compiler translates database access requests,
  447.    which consist of a projection term and a database goal, to the
  448.    appropriate SQL query. The compiler is written in standard Edinburgh
  449.    Prolog and has been ported to a number of Prologs. The code posted to
  450.    comp.lang.prolog works in ECRC's SEPIA Prolog, but should be easily
  451.    ported to other Prologs. A detailed tech report on the implementation
  452.    is available by email from draxler@cis.uni-muenchen.de (include
  453.    your full postal address). The compiler is copyright, but may be used
  454.    free of charge for non-commercial purposes and redistributed provided
  455.    the copyright notice is retained intact.
  456.  
  457. PSI:
  458.    PSI is a handy system for the management and retrieval of your
  459.    personal data, be it addresses, CD collections, or bibliographic
  460.    references. It is intended for the non-commercial user. It may not be
  461.    as full-fledged as some data-base systems, but has some features that
  462.    you won't find in most commercial systems. Also, you may find it
  463.    easier to set up and faster to use. PSI is useful for a broad range of
  464.    data. Indexing with descriptors makes searching for the data you need
  465.    fast, and the interface to other data-base formats (import and export)
  466.    is quite powerful. PSI was written in LPA MacProlog and is a "genuine
  467.    'double clickable' Mac application". PSI runs on all Macs with System
  468.    6 or 7 in 1MB of main memory. As LPA MacProlog isn't yet 32-bit clean,
  469.    PSI isn't either. Extensive documentation and some examples are
  470.    included. PSI is available by anonymous ftp from
  471.    sumex-aim.stanford.edu:/info-mac/app/ as the file psi-23.hqx. It
  472.    was also available on a recent Nautilus CD-ROM and will be on the
  473.    first Info-Mac CD-ROM.
  474.  
  475. Queens and Knights:
  476.    Queens and Knights are favorite problems for Prolog programmers.
  477.    A collection of several implementations is available by anonymous
  478.    ftp from sics.se:/pub/muse/queensANDknights.tar.Z.uue
  479.    Write to Roland Karlsson <roland@sics.se> for more information.
  480.  
  481. Rubik's Cube:
  482.    Amzi!, the creators of Cogent Prolog, have made sources to Cube Solver
  483.    II available from their ftp site, ftp.std.com:/vendors/amzi/.  It is
  484.    also available from the Prolog Repository at CMU, in
  485.    ftp.cs.cmu.edu:/user/ai/lang/prolog/code/fun/rubik/.  This Prolog
  486.    program solves Rubik's Cube.  The sources include a simple scrolling
  487.    interface that should work in any Edinburgh standard Prolog.  Also
  488.    included is a ready-made executable for 386 and 486 PCs; it was
  489.    implemented using Cogent Prolog.  For more information, write to Amzi!
  490.    Inc. (formerly Amziod) <amzi@world.std.com>, 40 Samuel Prescott Dr.,
  491.    Stow, MA 01775, Tel: 508-897-7332. Fax: 508-897-2784.
  492.  
  493. SEL:
  494.    SEL is a declarative set processing language. Its main features are
  495.    subset and equational program clauses, pattern matching over sets,
  496.    support for efficient iteration and point-wise/incremental computation
  497.    over sets, the ability to define transitive closures through circular
  498.    constraints, meta-programming and simple higher-order programming, and
  499.    a modest user-interface including tracing. The language seems
  500.    well-suited to a number of problems in graph theory, program analysis,
  501.    and discrete mathematics. The SEL compiler is written in Quintus
  502.    Prolog and the run-time system is written in C. It generates WAM-like
  503.    code, extended to deal with set-matching, memoization, and the novel
  504.    control structure of the language. SEL is available by anonymous FTP
  505.    from ftp.cs.buffalo.edu:/users/bharat/SEL2/.  The FTP release comes with a
  506.    user manual, bibliography of papers (including .dvi files), several
  507.    sample programs, and source code. For further information, write to
  508.    Bharat Jayaraman <bharat@cs.buffalo.edu>.
  509.  
  510. ----------------------------------------------------------------
  511. Subject: [1-3] Free Object-Oriented Systems for Prolog
  512.  
  513. OL(P), Object Layer for Prolog, is an object-oriented extension to
  514. Prolog.  It provides an object-oriented structuring and reuse
  515. mechanism for Prolog in a manner that preserves performance and
  516. semantics. The object-oriented layer is compiled into Prolog without
  517. introducing any side-effects.  OL(P) takes the view of objects as
  518. collections of predicates (called methods).  To Prolog, OL(P) 1.1 adds
  519. objects with methods, data encapsulation, instances, and multiple
  520. inheritance. Object methods can access Prolog predicates and vice
  521. versa. The OL(P) incremental compiler translates OL(P) programs to
  522. Prolog programs that don't need runtime interpretation (e.g., no
  523. search is needed for inheritance).  OL(P) 1.1 comes with prepared
  524. installation for SICStus Prolog and QUINTUS Prolog (both on UNIX),
  525. documentation, simple built-in project management, some libraries,
  526. and example programs. The source is included, so you can port OL(P)
  527. to different platforms, different Prolog systems, and different
  528. logic programming languages. OL(P) is available by anonymous ftp
  529. from parcftp.xerox.com:/ftp/pub/ol/ [13.1.64.94]. Written by Markus
  530. P.J. Fromherz <fromherz@parc.xerox.com>. 
  531.  
  532. See Common ESP (CESP) in [2-1] and BeBOP in [2-3].
  533.  
  534. ----------------------------------------------------------------
  535. Subject: [1-4] Commercial Object-Oriented Systems for Prolog
  536.  
  537. LAP is an object-oriented system by Elsa. For more information, write
  538. to Elsa Software, La Grange Dame Rose, 6 ave du Marechal Juin, 92366
  539. Meudon-La-Foret Cedex, France, call +33 (1) 46 30 24 55, fax +33 (1)
  540. 46 30 55 26, or send email to elsa!lap@uunet.uu.net.
  541.  
  542. SPIRAL is an object oriented system by CRIL for Sun3 and Sun4 under
  543. Unix. For more information, write to CRIL, Conception et Realisation,
  544. Industriel de Logiciel, 146 bd de Valmy 92707, Colombes Cedex, France,
  545. call +33 1 47 69 53 67, or fax +33 1 47 69 53 99.
  546.  
  547. See also LPA Prolog ++ in [2-2].
  548.  
  549. ----------------------------------------------------------------
  550. Subject: [1-5]  The Prolog 1000 Database
  551.  
  552. The Prolog 1000 is a database of real Prolog applications being
  553. assembled in conjunction with the Association for Logic Programming
  554. (ALP) and PVG. The aim is to demonstrate how Prolog is being used in
  555. the real world and it already contains over 500 programs with well
  556. over 2 million lines of code. The database is available for research
  557. use in SGML format from the Imperial College archive
  558.    src.doc.ic.ac.uk:/packages/prolog-progs-db/prolog1000.v1.gz
  559. If you have or know about a program that might qualify for inclusion,
  560. send an email message to Al Roth (alroth@cix.compulink.co.uk) for an
  561. electronic entry form which only takes a few minutes to complete. Or
  562. write to Prolog 1000, PO Box 137, Blackpool, Lancashire, FY2 0XY,
  563. U.K., Fax: +44 253 53811 Telephone: +44 253 58081. (Floppy disks for
  564. PC or Mac in text form are also welcome, and paper entries may also be
  565. sent). Queries may also be addressed to: Chris Moss
  566. (cdsm@doc.ic.ac.uk), Leon Sterling (leon@alpha.ces.cwru.edu).
  567.  
  568. ----------------------------------------------------------------
  569. Subject: [1-6] X-Windows Interfaces
  570.  
  571. PI:
  572.    PI is an interface between Prolog applications and the X Window System
  573.    that aims to be independent from the Prolog engine, provided that it
  574.    has a Quintus-style foreign function interface (such as SICStus, YAP).
  575.    It is mostly written in Prolog and is divided in two libraries: (1)
  576.    Edipo, a low-level interface to the Xlib functions, and (2) Ytoolkit,
  577.    a high-level user interface toolkit that allows you to create and
  578.    manage graphical objects, define new classes of objects, and handle
  579.    user interaction. PI is available by anonymous ftp from
  580.    ftp.ncc.up.pt:/pub/prolog/pi_1.2.tar.gz and includes documentation
  581.    and some demos. Also see ytoolkit.tar.Z. PI has been tested in
  582.    Quintus Prolog 3.1.1 and SICStus 2.1 #8. Send questions, comments,
  583.    and bug reports to Ze' Paulo Leal, Universidade de Porto, Portugal,
  584.    <zp@ncc.up.pt>. 
  585.  
  586. XWIP: 
  587.    ftp.x.org:/contrib/xwip.tar.Z  (formerly export.lcs.mit.edu)
  588.    ftp.uu.net:/X/contrib/xwip.tar.Z
  589.  
  590.    XWIP is an X Windows interface for PROLOG.
  591.  
  592. XPCE:
  593.    XPCE is an object-oriented X-window interface toolkit for symbolic
  594.    programming languages (Prolog and Lisp), offering a high level of
  595.    abstraction for communication with X11, Unix processes, Unix
  596.    networking facilities (sockets) and Unix files. XPCE's built-in
  597.    classes (about 150) are mostly written in C.  The XPCE/Prolog
  598.    interface allows the user to create and manipulate instances of these
  599.    classes.  The user can also create new XPCE classes from Prolog.
  600.    XPCE's window related classes provide various styles of menus,
  601.    primitive graphical objects, compound graphical objects and Emacs
  602.    oriented programmable text manipulation windows. The distribution
  603.    contains several demo programs, including a diagram drawing tool
  604.    (PceDraw), an animation demo, an Epoch-like editor, a graphical
  605.    interface to Unix ispell, and an online hyper-text manual for XPCE
  606.    itself.  A demo version of XPCE/SWI-Prolog for Linux may be obtained
  607.    by anonymous ftp from swi.psy.uva.nl:/pub/xpce/linux/ [145.18.114.17].
  608.    The non-demo versions (for SWI-Prolog, SICStus Prolog, Lucid Common
  609.    Lisp and LispWorks) require filling out a license and paying a fee
  610.    (see the file pub/xpce/INFO).  To be added to the mailing list
  611.    xpce@swi.psy.uva.nl send mail to xpce-request@swi.psy.uva.nl. Send
  612.    bugs to xpce-bugs@swi.psy.uva.nl. 
  613.  
  614.    ProWindows 3 is a commercial version of XPCE for Quintus Prolog. 
  615.    For further information, write to Simon Heywood, AI International Ltd, 
  616.    The Chapel, Park View House, 1 Park View Road, Berkhamsted, Herts, 
  617.    HP4 3EY, phone +44-(0)442-876722 (Sales Hotline +44 (0)442 876448),
  618.    fax +44-(0)442-877997, or send email to sheywood@aiil.co.uk.
  619.  
  620. ProTcl:
  621.    ProTcl is a Prolog interface to Tcl/Tk. It has a very simple
  622.    interface, which just allows one to evaluate Tcl expressions from
  623.    Prolog. It has been tested on ECLiPSe and SICStus, on a Sparc 10.
  624.    ProTcl is available by anonymous ftp from
  625.       ftp.ecrc.de:/pub/eclipse/progs/protcl/
  626.    Send comments and suggestions to Micha Meier <micha@ecrc.de>.
  627.  
  628. ----------------------------------------------------------------
  629. Subject: [1-7]  Mailing Lists
  630.  
  631. Prolog and Logic Programming:
  632.    prolog@sushi.stanford.edu (general)
  633.    prolog-hackers@sushi.stanford.edu (nitty gritty)
  634.  
  635.    All requests to be added to or deleted from this list, problems,
  636.    questions, etc., should be sent to prolog-request@sushi.stanford.edu
  637.  
  638.    [The host sushi.stanford.edu no longer exists, as of 11/24/92.
  639.     Does anybody know the new location of the mailing lists?]
  640.  
  641. Lambda Prolog:
  642.    lprolog@cis.upenn.edu
  643.  
  644.    To subscribe, send mail to lprolog-request@cis.upenn.edu.
  645.  
  646. Electronic Journal of Functional and Logic Programming (EJFLP)
  647.  
  648.    EJFLP is a refereed journal that will be distributed for free via e-mail.
  649.    The aim of EJFLP is to create a new medium for research investigating the
  650.    integration of the functional, logic and constraint programming paradigms.
  651.  
  652.    For instructions on submitting a paper, send an empty mail message with 
  653.       Subject: Help
  654.    to: 
  655.       submissions@ls5.informatik.uni-dortmund.de. 
  656.    You will receive an acknowledgment of your submission within a few hours.
  657.  
  658.    To subscribe to the journal, send an empty mail message to the following
  659.    address:
  660.        subscriptions@ls5.informatik.uni-dortmund.de
  661.    You will receive an acknowledgment of your subscription within a few days. 
  662.  
  663.    If there are any problems with the mail-server, send mail to
  664.    ejflp.op@ls5.informatik.uni-dortmund.de. 
  665.  
  666.    The editorial board is: Rita Loogen (RWTH Aachen), Herbert Kuchen (RWTH
  667.    Aachen), Michael Hanus (MPI-Saarbruecken), Manuel MT Chakravarty (TU
  668.    Berlin), Martin Koehler (Imperial College London), Yike Guo (Imperial
  669.    College London), Mario Rodriguez-Artalejo (Univ. Madrid), Andy Krall
  670.    (TU Wien), Andy Mueck (LMU Muenchen), Tetsuo Ida (Univ. Tsukuba,
  671.    Japan), Hendrik C.R. Lock (IBM Heidelberg), Andreas Hallmann (Univ.
  672.    Dortmund), Peter Padawitz (Univ. Dortmund), Christoph Brzoska (Univ.
  673.    Karlsruhe).
  674.  
  675. PDC-L:
  676.    PDC-L@nic.surfnet.nl is a discussion list for PDC Prolog users.
  677.  
  678.    To subscribe, send mail to LISTSERV@nic.surfnet.nl with 
  679.        SUBSCRIBE PDC-L <your full name>
  680.    in the message body.
  681.  
  682. Theorem Provers:
  683.    theorem-provers@ai.mit.edu
  684.  
  685.    This (unmoderated) list is intended for announcements of interest to
  686.    people interested in automated theorem proving.
  687.  
  688.    To subscribe, send your email address to theorem-provers-request@ai.mit.edu.
  689.  
  690. Type Theory:
  691.    types@dcs.gla.ac.uk
  692.  
  693.    Moderated mailing list about type theory. Archived on 
  694.       theory.lcs.mit.edu:/pub/meyer/
  695.  
  696.    To subscribe, send mail to types-request@dcs.gla.ac.uk.
  697.  
  698. Logic:
  699.    logic@cs.cornell.edu
  700.  
  701.    Moderated mailing list about logic. Archived on 
  702.       theory.lcs.mit.edu:/pub/meyer/
  703.   
  704.    To subscribe, send mail to logic-request@cs.cornell.edu
  705.  
  706. ----------------------------------------------------------------
  707. Subject: [1-8] Books and Magazine Articles
  708.  
  709. A BiBTeX bibliography of Logic Programming Conferences is available by
  710. anonymous ftp from duck.dfki.uni-sb.de. See [1-2] above.
  711.  
  712. A partially annotated bibliography of work on integrating
  713. object-oriented and logic programming is available by anonymous ftp
  714. from menaik.cs.ualberta.ca:/pub/oolog/ in PostScript and BibTeX
  715. formats. Written by Vladimir Alexiev <vladimir@cs.ualberta.ca>.
  716.  
  717. The following books are regarded as popular and widely used. Also
  718. included are some books about WAM. This is not intended to be a complete
  719. Prolog bibliography.
  720.  
  721. Prolog Programming:
  722.  
  723.    Covington, Michael A.; Nute, D.; and Vellino, A. "Prolog
  724.    Programming in Depth", Scott, Foresman & Co., 1987. ISBN 0-521-40984-5
  725.    (Out of print, but new edition coming soon. Copies of the 1987
  726.    edition are still available from the University of Georgia
  727.    Bookstore, at 706-542-7131.)
  728.  
  729.    Clocksin, W.F. and Mellish, C.S: "Programming in Prolog", 3rd Ed.
  730.    Springer Verlag, 1987, $29. ISBN 0-387-17539-3, 281 pages. (Basic
  731.    Introduction). 
  732.  
  733.    Conlon, Tom: "Programming in Parlog". Addison-Wesley, 1989, 
  734.    ISBN 0-201-17450-2.
  735.  
  736.    Dawe, C.M. and M.S. Dawe, "Prolog for Computer Science", Springer
  737.    Verlag, 1994. ISBN 0-387-19811-3, 190 pages, $35. (Intro to
  738.    computer science using Prolog.)
  739.  
  740.    Dodd, Anthony, "Prolog: A logical approach", Oxford University
  741.    Press, New York, 1990, 556 pages. ISBN 0-198-53822-7 (cloth), $52.50; 
  742.    ISBN 0-198-53821-9 (paperback), $26.00.
  743.  
  744.    Kluzniak and Szpakowicz: "Prolog for Programmers", Academic Press 1985
  745.  
  746.    G. L. Lazarev, "Why Prolog? Justifying Logic Programming for Practical
  747.    Applications", Prentice Hall, 1989. [Software engineering bent.
  748.    Emphasizes advantages of declarative programming.]
  749.  
  750.    Le, Tu Van,  "Techniques of Prolog programming, with implementation
  751.    of logical negation and quantified goals", John Wiley, New York, 1993.
  752.    ISBN: 0-471-57175-X (American edition), 0-471-59970-O (International
  753.    edition).  LnProlog, a Prolog interpreter that supports negative
  754.    finding queries and quantified queries is available together with
  755.    the book. 
  756.  
  757.    Leon Sterling, editor, "The Practice of Prolog", MIT Press, 1990.
  758.    342 pages, ISBN 0-262-19301-9, $39.95.
  759.  
  760. Advanced Prolog Programming:
  761.  
  762.    O'Keefe, Richard A., "The Craft of PROLOG", MIT Press, 1990, 410 pages.
  763.    ISBN 0-262-15039-5, $42.50.
  764.  
  765.    Peter Ross, "Advanced Prolog: Techniques and Examples",
  766.    Addison-Wesley, 1989, ISBN 0-201-17527-4.
  767.  
  768.    Leon Sterling and Ehud Shapiro, "The Art of Prolog: Advanced
  769.    Programming Techniques", 2nd Edition, MIT Press, 1994. 688 pages,
  770.    ISBN 0-262-19338-8, $49.95.
  771.    [Source code for the book is available in ftp.cwru.edu:/ArtOfProlog/.
  772.     There is a subdirectory for each chapter of the book containing the
  773.     text of the programs in that chapter.]
  774.  
  775. AI and Prolog:
  776.  
  777.    Yoav Shoham, "Artificial Intelligence Techniques in Prolog", Morgan
  778.    Kaufmann Publishers, 1993, 400 pages. ISBN 1-55860-167-8 (paper) $39.95. 
  779.    ISBN 1-55860-319-0 (cloth) $49.95. [Topics include search, backward
  780.    chaining, data-driven methods, truth maintenance, constraint
  781.    satisfaction, reasoning with uncertainty, planning, temporal
  782.    reasoning, machine learning, and natural language processing. Prolog
  783.    source for all the programs in the book is available by anonymous ftp
  784.    from unix.sri.com:/pub/shoham/]
  785.  
  786.    Bratko, Ivan, "Programming in Prolog for Artificial Intelligence", 
  787.    2nd Edition, Addison-Wesley, 1990. [Good introduction to Prolog and AI.
  788.    A bit large, though, for an Intro to Prolog course. Includes
  789.    discussion of the 8-queens problem.]
  790.  
  791.    Dennis Merritt: "Building Expert Systems in Prolog", Springer-Verlag 1989.
  792.    Explains how to build various expert system shells in Prolog, including
  793.    forward/backward chaining, FOOPS, rete-network, frames, solving
  794.    Rubik's cube and more. Includes complete source code listings.
  795.    (Source code from the book is also sold on disk by Amzi!.)
  796.  
  797.    Dennis Merritt: "Adventure in Prolog", Springer-Verlag, 1990. 
  798.    ISBN 0-387-97315-X, ISBN 3-540-97315-X.  $34
  799.    Teaches Prolog by leading the reader through the construction of an
  800.    adventure game. The exercises lead the reader through three other
  801.    programs:  an intelligent database, an expert system and an order-entry
  802.    program.  While most texts teach Prolog with fragments of interesting code,
  803.    this book takes a more pragmatic (as opposed to theoretical approach) and
  804.    shows the reader how to assemble complete Prolog programs.
  805.  
  806.    Gazdar, G. and Mellish, C., "Natural Language Processing in Prolog:
  807.    An Introduction to Computational Linguistics", Addison-Wesley,
  808.    Reading, Massachusetts, 1989. (There are three different editions
  809.    of the book, one for Lisp, one for Prolog, and one for Pop-11.)
  810.  
  811.    Fernando C.N. Pereira and Stuart M. Shieber, "Prolog and
  812.    Natural-Language Analysis", CSLI Lecture Notes Number 10, Stanford,
  813.    CA, 1987. 286 pages, ISBN 0-937073-18-0.
  814.  
  815.    Michael A. Covington, "Natural Language Processing for Prolog
  816.    Programmers", Prentice-Hall, Englewood Cliffs, NJ, 1994. ISBN
  817.    0-13-629213-5.
  818.  
  819.    Harvey Abramson and Veronica Dahl, "Logic Grammars", Springer-Verlag,
  820.    New York, 1989, 234 pages, ISBN 0-387-96961-6.
  821.  
  822.    Peter Flach, "Simply Logical: Intelligent Reasoning by Example",
  823.    John Wiley & Sons, 1994, 256 pages. ISBN 0-471-94152-2 paper ($31.95).
  824.    [Covers theoretical and practical aspects of Prolog programming as well
  825.    as AI topics like knowledge representation, search, heuristics, 
  826.    abduction, default reasoning, and induction. Every technique is
  827.    accompanied by a Prolog program that implements it. More information
  828.    about the book is available from  
  829.       http://machtig.kub.nl:2080/Infolab/Peter/SimplyLogical.html
  830.    or by email from Peter.Flach@kub.nl.]
  831.  
  832. Logic Programming:
  833.  
  834.    Hogger, C.J.: "Introduction to Logic Programming", Academic Press 1984
  835.  
  836.    Kowalski, R.A.: "Logic for Problem Solving", New York 1979, Elsevier Publ.
  837.  
  838.    LLoyd, John: "Foundations of Logic Programming", 2nd Edition,
  839.    Springer-Verlag, 1988. (Intro to logic programming theory.)
  840.  
  841.    David Maier and David S. Warren: "Computing with Logic: Logic
  842.    Programming with Prolog", Benjamin Cummings, Menlo Park, CA, 1989.
  843.  
  844.    Nilsson, Ulf and Maluszynski, Jan, "Logic, Programming and Prolog",
  845.    John Wiley & Sons, 1990, ISBN 0-471-92625-6.
  846.  
  847.    Subrata Kumar DAS, "Deductive Databases and Logic Programming",
  848.    Addison-Wesley Publishing Company, July 1992, 448 pages. 
  849.    ISBN 0-201-56897-7. 
  850.  
  851. Constraint Logic Programming and Constraint Satisfaction:
  852.  
  853.    Bennaceur, Hachemi and Gerard Plateau, "An exact algorithm for the
  854.    constraint satisfaction problem: Application to logical inference",
  855.    Information Processing Letters 48(3):151-158, November 19, 1993.
  856.  
  857.    Cohen, J., "Constraint Logic Programming Languages", Communciations
  858.    of the ACM 33(7):52-68, 1992. [Good introduction to CLP and
  859.    includes a historical overview.]
  860.  
  861.    Freeman-Benson, B.N., Maloney, J., and Borning, A., "An Incremental
  862.    Constraint Solver", Communications of the ACM 33(1):54-63, 1990.
  863.    [Includes a good reading list on the history and applications of
  864.    constraints.]
  865.  
  866.    Freuder, Eugene C., and Richard J. Wallace, "Partial constraint
  867.    satisfaction", Artificial Intelligence 58(1-3):21-70, December 1992.
  868.  
  869.    Van Hentenryck, Pascal, "Constraint Satisfaction in Logic Programming",
  870.    MIT Press, Cambridge, MA, 1989, ISBN 0-262-08181-4.
  871.  
  872.    Jaffar, Joxan and Jean-Louis Lassez, "Constraint Logic Programming", in
  873.    Proceedings of the 14th ACM Symposium on Principles of Programming
  874.    Languages (POPL), Munich, Germany, pages 111-119, 1987.  
  875.    [A longer version appears in Joxan Jaffar and Jean-Louis Lassez,
  876.    "Constraint Logic Programming", Technical Report 86-74, Monash
  877.    University, Victoria, Australia, June 1986.]
  878.  
  879.    Kumar, Vipin, "Algorithms for Constraint-Satisfaction Problems: A
  880.    Survey", AI Magazine 13(1):32-44, 1992.
  881.  
  882.    Mackworth, Alan K., "The logic of constraint satisfaction", Artificial
  883.    Intelligence 58:3-20, 1992.
  884.  
  885.    Meseguer, P., "Constraint Satisfaction Problems: An Overview", AICOM
  886.    2(1):3-17, 1989.
  887.  
  888.    Steele, Guy L., "The Definition and Implementation of A Computer
  889.    Programming Language Based on Constraints", PhD thesis, MIT, 1980.
  890.  
  891.    Tsang, E., "Foundations of constraint satisfaction", Academic Press, 1993.
  892.    ISBN 0-12-701610-4.
  893.  
  894.    Zhang, Ying and Alan K. Mackworth, "Constraint Programming in
  895.    Constraint Nets", in Position Papers for the First Workshop on
  896.    Principles and Practice of Constraint Programming, pages 303-312,
  897.    Newport, RI, April 28-30, 1993.
  898.  
  899.    [See also the articles on Constraint Networks (pages 276-285) and
  900.    Constraint Satisfaction (pages 285-293) in Shapiro's Encyclopedia
  901.    of Artificial Intelligence.]
  902.  
  903. Prolog Implementations and WAMs:
  904.  
  905.    Ait-Kaci, Hassan, "Warren's Abstract Machine: A Tutorial Reconstruction",
  906.    MIT Press, Cambridge, MA. 1991.
  907.    ISBN: 0-262-51058-8 paper ($17.50), 0-262-01123-9 cloth.
  908.  
  909.    Patrice Boizumault, "The Implementation of Prolog", Princeton
  910.    University Press, Princeton, NJ, 1993.  Translated by Ara M.
  911.    Djamboulian and Jamal Fattouh. ISBN 0-691-08757-1, 357 pages ($49.50).
  912.  
  913.    Campbell, J.A. (ed):  "Implementations of Prolog", John Wiley, 1984
  914.  
  915.    Peter M. Kogge, "The Architecture of Symbolic Computers", 
  916.    McGraw-Hill, 1991. ISBN 0-07-035596-7.
  917.       Includes sections on memory management, the SECD and
  918.       Warren Abstract Machines, and overviews of the various
  919.       Lisp Machine architectures.
  920.  
  921.    David H. D. Warren: "An Abstract Prolog Instruction Set", Technical Note
  922.    No 309, SRI International, Menlo Park, CA, 1983.
  923.  
  924.    David H. D. Warren, "Logic Programming and Compiler Writing," in
  925.    Software-Practice and Experience 10(2):97-125, 1980.
  926.  
  927.    J. Cohen and T. Hickey, "Parsing and Compiling using Prolog",
  928.    ACM Transactions on Programming Languages and Systems (TOPLAS), 
  929.    9(2):125-163, 1987.
  930.  
  931.    J. Paakki, "Prolog in practical compiler writing", The Computer
  932.    Journal 34(1):64-72, 1991. (But see Letters to the Editor, The
  933.    Computer Journal 35(3):313, 1992.)
  934.  
  935.    Jonathan P. Bowen, "From Programs to Object Code using Logic and Logic
  936.    Programming", in R. Giegerich and S. L. Graham, editors, Code
  937.    Generation -- Concepts, Tools, Techniques, pages 173-192,
  938.    Springer-Verlag, 1992.
  939.  
  940.    Jonathan P. Bowen, "From Programs to Object Code and back again using
  941.    Logic Programming: Compilation and Decompilation", Journal of
  942.    Software Maintenance: Research and Practice 5(4):205-234, December 1993.
  943.  
  944. Parallel Prologs:
  945.  
  946.    Gregory, Steve: "Parallel Logic Programming in Parlog: The Language
  947.    and Its Implementation", Addison-Wesley, 1987, ISBN 0-201-19241-1.
  948.  
  949.    Tick, E.: "Parallel Logic Programming". MIT Press, 1991
  950.  
  951. Miscellaneous:
  952.  
  953.    Deville, Yves: "Logic Programming, Systematic Program Development",
  954.    International Series in Logic Programming, Addison-Wesley, 1990, 338 pages.
  955.    ISBN 0-201-17576-2. 
  956.  
  957.    Wolfram, D.A., "The Clausal Theory of Types", Cambridge Tracts in 
  958.    Theoretical Computer Science {\bf 21}, Cambridge University Press,
  959.    1993.
  960.  
  961. Magazine Articles:
  962.  
  963.    PCAI Magzine, September/October 1993. Article on exploring Prolog,
  964.    showing the first steps to four applications -- an adventure game, an
  965.    object-oriented shell, a tax program, and an animal guessing game.
  966.    An excerpt of this article is available from
  967.       ftp.cs.cmu.edu:/user/ai/lang/prolog/doc/intro/explore.doc 
  968.  
  969.    BYTE Magazine, August 1987. 5 introductory articles on Prolog.
  970.    Applications include logic grammars and simulating a microprocessor.
  971.  
  972.    Uwe Schreiweis: Beredte Logik, Konzepte der 'KI-Sprache" Prolog,
  973.    (Eloquent Logic, Concepts of the AI language Prolog), iX Magazine,
  974.    October 1992, pages 84-90.
  975.  
  976.    Uwe Schreiweis: Basis der Fuenf, Die Sprache Prolog in der Public
  977.    Domain, (Base of the Five, Prolog in the Public Domain), iX Magazine,
  978.    October 1992, pages 92-94.
  979.  
  980.    Uwe Schreiweis: Fuenfte Generation, Kommerzielle Prolog-Systeme,
  981.    (Fifth Generation, Commercial Prolog Systems), iX Magazine, October
  982.    1992, pages 96-102.
  983.  
  984.    Klaus Bothe: Weniger Raum, Speicherplatzbezogener Prolog-Benchmark,
  985.    (Less Space, A Space Oriented Prolog Benchmark), iX Magazine, October
  986.    1992, pages 106-7.
  987.  
  988. Magazines Related to Prolog:
  989.  
  990.    Logic Programming Newsletter (4 issues/yr)
  991.    Included with membership in the Association for Logic Programming 
  992.    ($20 regular, $10 students). For membership information, write to
  993.    Cheryl Anderson (ALP), DoC-ICSTM, 180 Queens Gate, London SW7 2BZ,
  994.    UK, phone +44-71-589-5111 x5011, fax +44-71-589-1552, or send email
  995.    to alp@doc.ic.ac.uk. Contributions are welcome and should be sent
  996.    to Andrew Davidson <ad@cs.mu.oz.au>. 
  997.  
  998.    AI Communications (4 issues/yr)
  999.    "The European Journal on Artificial Intelligence"  ISSN 0921-7126,
  1000.    European Coordinating Committee for Artificial Intelligence.
  1001.  
  1002.    AI Expert (issued monthly) ISSN 0888-3785, Miller Freeman Publishers
  1003.    See a copy of the magazine for list of BBS's in NA. On CompuServe: GO
  1004.    AIEXPERT. Regularly reviews Prolog interpreters and compilers.
  1005.  
  1006.    Expert Systems (issued Feb, May, Aug and Nov) ISSN 0266-4720,
  1007.    Learned Information (Europe) Ltd. Subscription: GBP 85 or USD 110
  1008.  
  1009.    IEEE Expert (issued bimonthly) ISSN 0885-9000, IEEE Computer Society
  1010.  
  1011.    The Journal of Logic Programming (issued bimonthly), (North-Holland),
  1012.    Elsevier Publishing Company, ISSN 0743-1066
  1013.  
  1014.    New Generation Computing, Springer-Verlag. (LOTS of Prolog in it.)
  1015.  
  1016. ----------------------------------------------------------------
  1017. Subject: [1-9] Is there a straight-forward way of compiling Prolog to C?
  1018.  
  1019. Two methods of compiling Prolog to C have been reported in the
  1020. literature:
  1021.    -  WAM-based approaches
  1022.    -  Continuation-based approaches
  1023.  
  1024. The WAM-based approach compiles Prolog programs into a sequence of C
  1025. function or macro calls to WAM instructions. A brief description of
  1026. this method and some results are given in the paper:
  1027.  
  1028.    Michael R. Levy and R. Nigel Horspool, "Translating Prolog to C: a
  1029.    WAM-based Approach", in Proceedings of the Second Compulog Network
  1030.    Area Meeting on Programming Languages, and the Workshop on Logic
  1031.    Languages in Pisa, May 1993. (Available by anonymous ftp from 
  1032.    csr.uvic.ca:/pub/mlevy/.)
  1033.  
  1034. A "quick-and-dirty" method is to implement the WAM functions as described
  1035. in Ait-Kaci's tutorial, to label each call with a C case label, and then throw
  1036. a giant switch(P) statement around the entire sequence of calls, where P
  1037. is the WAM program counter.  On return from any instruction that modifies
  1038. P, a "goto Start" must be inserted. (This method was posted by Rob
  1039. Scott, <rbs@aisb.ed.ac.uk>, based on the JANUS papers by Saraswat.)
  1040.  
  1041. This strategy will work, but does not allow you to modularize your
  1042. prolog program. Predicates in prolog seem to generate 8 to 15 WAM
  1043. instructions per clause, so (assuming very roughly a clause per
  1044. line)you might expect your 1,000 line program to expand to a switch
  1045. statement containing up to 15,000 lines. Some C compilers can't handle
  1046. such a big switch statement.
  1047.  
  1048. Levy and Horspool solve this problem by compiling each Prolog
  1049. predicate to a seperate C function. A dispatch loop mechanism is used
  1050. to call the C functions. C switch statements are used only inside the
  1051. functions.  A predicate that calls another predicate sets P to contain
  1052. the address of the C function that implements the called predicate,
  1053. (and sets another register called W in their scheme) and then returns
  1054. to the dispatcher instead of calling the predicate. This bypasses the
  1055. C run-time stack.  This lets one exploit WAM optimizations (like LCO)
  1056. and yet retain the ability to create many modules. Their system
  1057. performs well when compared with byte-code compilers, but translated
  1058. code runs slower than code produced by native code compilers.  On the
  1059. other hand, it outputs portable ANSI C that can run on any machine
  1060. with a C compiler.
  1061.  
  1062. Other approaches to translating to C use continuations. The idea here
  1063. is to translate every Prolog predicate to a C function that has
  1064. an additional argument, namely a continuation function. If the function
  1065. fails, it simply returns, but if it succeeds, it executes the continuation.
  1066. When the function regains control from the continuation, it can then try
  1067. to generate a new solution. Here are two references
  1068. that describe systems built using continuations:
  1069.  
  1070.    J. L. Weiner and S. Ramakrishnan, "A Piggy-Back Compiler for Prolog",
  1071.    in Proceedings of SIGPLAN T88 Conference on Programming Language
  1072.    Design and Implementation, Atlanta, Georgia, 1988, pages 288-296.
  1073.  
  1074.    J. L. Boyd and G. M. Karam, "Prolog in C", Carleton University,
  1075.    Ottawa, 1988. 
  1076.  
  1077. Oliver Ridoux <Olivier.Ridoux@irisa.fr> reports that a
  1078. continuation-based approach works well when used to compile
  1079. LambdaProlog. His scheme translates every predicate into a function
  1080. that uses and modifies the success and failure continuations, with
  1081. recursion in the predicate becoming iteration in the continuation
  1082. passing mechanism. Inside the function one uses whichever intermediate
  1083. machine one fancies. Clauses within the function can be either the
  1084. branches of a switch statement or simply labelled when using a C
  1085. system that can store labels. This approach can still generate
  1086. monstrous C programs that blow up the C compiler, but the C programs
  1087. aren't as large as those generated by a one module to a function
  1088. scheme. Approaches that replace recursion in a predicate with
  1089. recursion in a function tend to overload the C stack and lead to
  1090. sloppy memory management.  Two technical reports describing Ridoux's
  1091. approach are available by anonymous ftp from 
  1092.    ftp.irisa.fr:/
  1093. as pm/*.ps.Z and mailv06/*.ps.Z.
  1094.  
  1095. Michael Covington <mcovingt@ai.uga.edu> points out that a very simple
  1096. approach is to write a Prolog interpreter in C, then store the Prolog
  1097. program in that program's data! This will, of course, execute slowly.
  1098. One might imagine all sorts of other schemes. For example, a query
  1099. could be treated as a stack of "suspensions" (with the left-most goal
  1100. on top).  The top suspension is executed by selecting the appropriate
  1101. clause (possibly using indexing), and then, if necessary, pushing new
  1102. suspensions on the stack (the body of the clause whose head unified
  1103. with the current suspension).
  1104.  
  1105. Another question to ask is this: Is there any reason why you should want to
  1106. convert Prolog to C at all? George Saab of Quintus Corp. pointed out that,
  1107. with Quintus Prolog, you can create a standard .o file from a Prolog file,
  1108. which can then be linked with your other .o files to create an executable.
  1109. What's more, your Prolog code can be called from C code and vice versa.
  1110.  
  1111. On ther hand, the advantage of distributing "Prolog objects" as C rather than
  1112. .o files is portability.
  1113.  
  1114. M. Gaspari  and G. Attardi describe an approach to translating Prolog to C
  1115. based on the provision of a common runtime architecture. This is
  1116. described in 
  1117.  
  1118.    G. Attardi and M. Gaspari, "Multilanguage Interoperability", in
  1119.    Proceedings of The 3rd International Symposium, PLILP 91, 
  1120.    Springer Verlag, LNCS #528, 1991.
  1121.  
  1122. [Note: Thanks to Michael Levy, Department of Computer Science,
  1123. University of Victoria, <mlevy@csr.uvic.ca>, for writing this section.]
  1124.  
  1125. ----------------------------------------------------------------
  1126. Subject: [1-10] WAM emulators and tracers
  1127.  
  1128. Johan Bevemyr's Luther-based WAM-tracer is available by anonymous ftp
  1129. from Uppsala University in Sweden. It includes a simple compiler from
  1130. Prolog to WAM code and a low-level WAM code tracer written in
  1131. emacs-lisp.  The tracer splits the screen into regions to show
  1132. data-areas, registers, and so on. You can then step through running
  1133. the code. The tracer is available by anonymous ftp from
  1134.    ftp.csd.uu.se:/pub/WAM-tracer/luther.tar.Z
  1135. Documentation on the tracer is included in the distribution.  The
  1136. emulator is in the /pub/WAM-emulator/ directory (and runs in SICStus
  1137. Prolog).  For more information, contact Johan Bevemyr
  1138. <bevemyr@csd.uu.se> or <bevemyr@sics.se>.
  1139.  
  1140. ----------------------------------------------------------------
  1141. Subject: [1-11] What is the Basic Andorra Model and AKL?
  1142.  
  1143. The Basic Andorra Model is a way to execute definite clause programs
  1144. that allows dependent and-parallelism to be exploited transparently.
  1145. It also supports nice programming techniques for search programs.  The
  1146. idea is to first reduce all goals that match at most one clause.  When
  1147. no such goal exists, any goal (e.g., the left-most) may be chosen.
  1148. The BAM was proposed by David H. D. Warren, and his group at Bristol
  1149. has developed an AND-OR parallel implementation called Andorra-I,
  1150. which also supports full Prolog.  See, for example, 
  1151.  
  1152.    Seif Haridi and Per Brand, "Andorra Prolog, an integration of Prolog
  1153.    and committed choice languages", in Proceedings of the FGCS 1988,
  1154.    ICOT, Tokyo, 1988.
  1155.  
  1156.    Vitor Santos Costa, David H. D. Warren, and Rong Yang, "Two papers on
  1157.    the Andorra-I engine and preprocessor", in Proceedings of the 8th
  1158.    ICLP. MIT Press, 1991.
  1159.  
  1160.    Steve Gregory and Rong Yang, "Parallel Constraint Solving in
  1161.    Andorra-I", in Proceedings of FGCS'92. ICOT, Tokyo, 1992.
  1162.  
  1163. AKL (Andorra Kernel Language) is a concurrent constraint programming
  1164. language that supports both Prolog-style programming and committed
  1165. choice programming.  Its control of don't-know nondeterminism is based
  1166. on the Andorra model, which has been generalised to also deal with
  1167. nondeterminism encapsulated in guards and aggregates (such as bagof)
  1168. in a concurrent setting. See, for example,
  1169.  
  1170.    Sverker Janson and Seif Haridi, "Programming Paradigms of the Andorra
  1171.    Kernel Language", in Proceedings of ILPS'91. MIT Press, 1991.
  1172.  
  1173.    Torkel Franzen, "Logical Aspects of the Andorra Kernel Language", SICS
  1174.    Research Report R91:12, Swedish Institute of Computer Science, 1991.
  1175.  
  1176.    Torkel Franzen, Seif Haridi, and Sverker Janson, "An Overview of the
  1177.    Andorra Kernel Language", In LNAI (LNCS) 596, Springer-Verlag, 1992.
  1178.  
  1179.    Sverker Janson, Johan Montelius, and Seif Haridi, "Ports for Objects
  1180.    in Concurrent Logic Programs", in Research Directions in Concurrent
  1181.    Object-Oriented Programming, MIT Press, 1993 (forthcoming).
  1182.  
  1183. The above papers on AKL are available by anonymous ftp from 
  1184.    sics.se:/pub/ccp/papers/
  1185. An (as yet non-released) prototype implementation of AKL is available
  1186. for research purposes (contact sverker@sics.se). 
  1187.  
  1188. ----------------------------------------------------------------
  1189. Subject: [1-12] What is Constraint Logic Programming?
  1190.  
  1191. Constraint Logic Programming (CLP) augments Prolog by adding
  1192. constraints to the clauses. The CLP implementation solves goals in the
  1193. same manner as Prolog, but also merges the constraints associated with
  1194. each rule. If the merge succeeds, the successful goal and the
  1195. corresponding constraints are returned. If, however, the constraints
  1196. are mutually exclusive, the solution fails.
  1197.  
  1198. ----------------------------------------------------------------
  1199. Subject: [1-13] How do you write portable programs in Prolog?
  1200.  
  1201. The de-facto standard syntax for Prolog is known as the Edinburgh
  1202. standard. It is based on the syntax of DEC-10 Prolog, an early Prolog
  1203. implementation developed at the University of Edinburgh.
  1204. See question [1-1] for information on the draft ISO standard for
  1205. Prolog.
  1206.  
  1207. Unfortunately, not every Prolog implementation is Edinburgh compatible.
  1208. There also isn't any notion of read-conditionalization, like #+ and #-
  1209. *features* in Common Lisp. 
  1210.  
  1211. One option is to use the C preprocessor on Prolog code before loading
  1212. it into Prolog.  Or you could use term-expansion to roll your own
  1213. conditional compilation system. Term expanding a clause to []
  1214. effectively discards it.
  1215.  
  1216. Another possibility is to conditionalize the execution instead of the
  1217. compilation. The user would have to uncomment a line like one of the
  1218. following, 
  1219.    % this_is(quintus).
  1220.    % this_is(sicstus).    
  1221. and the code would have to test for the proper literal
  1222.    a :- this_is(quintus), blah, blah, blah.
  1223.    a :- this_is(sicstus), blah, blah, blah.
  1224. at a slight cost in efficiency. (If you first feed the program through
  1225. a general partial evaluator, you'll get an equivalent program without
  1226. the inefficiency. Partial evaluation is in some sense a more powerful
  1227. and semantically cleaner form of source preprocessing. Given
  1228.         <head> :- <condition>, <rest of body>.
  1229. If <condition> is always false, we can safely drop the clause. If
  1230. <condition> is always true, we can drop it from any clauses that
  1231. include it.) 
  1232.  
  1233. ----------------------------------------------------------------
  1234. ;;; *EOF*
  1235.  
  1236.